n, m = map(int, input().strip().split())
x = list(map(int, input().strip().split()))
taxi = list(map(int, input().strip().split()))
pos = {}
taxnum = 0
for i in range(n + m):
if taxi[i] == 1:
pos[taxnum] = i
taxnum += 1
ans = [0 for i in range(m)]
curr = 0
i = 0
while taxi[i] == 0:
ans[curr] += 1
i += 1
if i >= n + m: break
for j in range(i, n + m):
if taxi[j] == 1:
curr += int(j != i)
continue
if curr + 1 < len(pos):
if x[pos[curr + 1]] - x[j] < x[j] - x[pos[curr]]:
ans[curr + 1] += 1
else:
ans[curr] += 1
else:
ans[curr] += 1
print(*ans)
768A - Oath of the Night's Watch | 156C - Cipher |
545D - Queue | 459B - Pashmak and Flowers |
1538A - Stone Game | 1454C - Sequence Transformation |
165B - Burning Midnight Oil | 17A - Noldbach problem |
1350A - Orac and Factors | 1373A - Donut Shops |
26A - Almost Prime | 1656E - Equal Tree Sums |
1656B - Subtract Operation | 1656A - Good Pairs |
1367A - Short Substrings | 87A - Trains |
664A - Complicated GCD | 1635D - Infinite Set |
1462A - Favorite Sequence | 1445B - Elimination |
1656C - Make Equal With Mod | 567A - Lineland Mail |
1553A - Digits Sum | 1359B - New Theatre Square |
766A - Mahmoud and Longest Uncommon Subsequence | 701B - Cells Not Under Attack |
702A - Maximum Increase | 1656D - K-good |
1426A - Floor Number | 876A - Trip For Meal |